/**
 * TypeScript 对象
 * 对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象
 */
let StudentJane = {
    username : "Jane",
    age : 18,
    sex : "female",
    address : [ "China", "Hubei", "Wuhan" ],
    say :() => {console.log( "Hi there" );},
    run : () => {}
}
// 访问属性
console.log( StudentJane.username );
// 调用方法
StudentJane.say();
// 修改属性
StudentJane.run = () => {
    console.log( "Running" );
}
// 调用修改后的方法
StudentJane.run();

/**
 * 函数参数为对象
 */
let invoke= (obj:any) => {
    console.log(obj.username);
    console.log(obj.age);
}
invoke( StudentJane );

/**
 * 函数返回值为对象
 */
interface IPoint {
    x: number;
    y: number;
}
function addPoints( p1: IPoint, p2: IPoint ) {
    return {
        x: p1.x + p2.x,
        y: p1.y + p2.y
    };
}
let newPoint = addPoints( { x: 1, y: 2 }, { x: 2, y: 3 } );
console.log( newPoint );